The use of I2C (inter-IC control) devices is very popular among designers of electronic systems because the devices offer an inexpensive way to provide distributed monitoring or control of a piece of equipment using a simple two wire serial communication bus. Inexpensive I2C devices are available to monitor voltage, temperature, and other physical quantities, provide non-volatile memory, parallel IO ports, and a large variety of other specialized functions. These devices are widely used in many types of electronic equipment from consumer electronics to computer systems.
An I2C bus provides for 128 unique addresses by definition. Real world designs, however, typically contain I2C devices that use multiple I2C addresses resulting in a practical limit of closer to 1-8 devices. Since only relatively few devices can be uniquely addressed on any given two wire I2C bus, designers typically use multiple I2C busses when the addresses on a given bus are used up. The use of multiple busses increases system cost and complexity. Another shortcoming of the I2C bus is that it does not provide any features to guarantee the integrity of the data that's traveling on the bus. Accordingly, there is a need for an I2C-type bus that practically supports a greater number of addresses while also providing an amount of integrity for data traveling thereon.